import { create } from 'zustand';

// 计算购物车总价和总数量的辅助函数
const calculateCartTotals = (cartItems) => {
  const totalPrice = cartItems.reduce((sum, item) => 
    sum + item.price * item.quantity, 0
  );
  const totalCount = cartItems.reduce((sum, item) => 
    sum + item.quantity, 0
  );
  return { totalPrice, totalCount };
};

const useCartStore = create((set) => ({
  cartItems: [],
  totalPrice: 0,
  totalCount: 0,

  // 添加商品到购物车
  addToCart: (item) => {
    set((state) => {
      const existingItemIndex = state.cartItems.findIndex(i => 
        i.id === item.id && i.selectedSku?.id === item.selectedSku?.id
      );

      let newCartItems;
      if (existingItemIndex >= 0) {
        // 如果商品已存在，更新数量
        newCartItems = [...state.cartItems];
        newCartItems[existingItemIndex].quantity += item.quantity;
      } else {
        // 如果商品不存在，添加新商品
        newCartItems = [...state.cartItems, item];
      }

      // 使用辅助函数计算总价和总数量
      const { totalPrice, totalCount } = calculateCartTotals(newCartItems);

      return {
        cartItems: newCartItems,
        totalPrice,
        totalCount
      };
    });
  },

  // 从购物车移除商品
  removeFromCart: (itemId, skuId) => {
    set((state) => {
      const newCartItems = state.cartItems.filter(item => 
        !(item.id === itemId && item.selectedSku?.id === skuId)
      );

      // 使用辅助函数计算总价和总数量
      const { totalPrice, totalCount } = calculateCartTotals(newCartItems);

      return {
        cartItems: newCartItems,
        totalPrice,
        totalCount
      };
    });
  },

  // 更新购物车中商品的数量
  updateCartItemQuantity: (itemId, skuId, quantity) => {
    set((state) => {
      const newCartItems = state.cartItems.map(item => {
        if (item.id === itemId && item.selectedSku?.id === skuId) {
          return { ...item, quantity };
        }
        return item;
      });

      // 使用辅助函数计算总价和总数量
      const { totalPrice, totalCount } = calculateCartTotals(newCartItems);

      return {
        cartItems: newCartItems,
        totalPrice,
        totalCount
      };
    });
  },

  // 清空购物车
  clearCart: () => {
    set({ cartItems: [], totalPrice: 0, totalCount: 0 });
  }
}));

export default useCartStore;